#ifndef __CFGPARSER_STORAGE_PATH_H__
#define __CFGPARSER_STORAGE_PATH_H__

#include <string>

// 平台检测宏
#if defined(_WIN32) || defined(_WIN64)
#define CFGPARSER_PLATFORM_WINDOWS
#elif defined(__APPLE__) && defined(__MACH__)
#define CFGPARSER_PLATFORM_MACOS
#elif defined(__linux__)
#define CFGPARSER_PLATFORM_LINUX
#else
#define CFGPARSER_PLATFORM_UNIX
#endif

namespace cfgparser
{

    /**
     * @brief 获取系统默认配置目录路径
     * @param app_name 应用程序名称
     * @return 配置目录路径
     */
    std::string get_default_config_path(const std::string &app_name);

    /**
     * @brief 获取系统默认数据目录路径
     * @param app_name 应用程序名称
     * @return 数据目录路径
     */
    std::string get_default_data_path(const std::string &app_name);

    /**
     * @brief 获取系统默认日志目录路径
     * @param app_name 应用程序名称
     * @return 日志目录路径
     */
    std::string get_default_log_path(const std::string &app_name);

    /**
     * @brief 创建目录（如果不存在）
     * @param path 目录路径
     * @return true 成功，false 失败
     */
    bool create_directory(const std::string &path);

    /**
     * @brief 获取当前应用程序名称
     * @return 应用程序名称
     */
    const std::string get_app_name();

    /**
     * @brief 获取当前可执行文件的完整路径
     * @return 可执行文件路径
     */
    [[maybe_unused]] const std::string get_executable_path();

    /**
     * @brief 获取当前可执行文件所在目录
     * @return 可执行文件目录路径
     */
    [[maybe_unused]] const std::string get_executable_directory();

} // namespace cfgparser

// 默认路径配置宏定义
#ifdef CFGPARSER_PLATFORM_WINDOWS
#define CFGPARSER_DEFAULT_CONFIG_DIR "%APPDATA%"
#define CFGPARSER_DEFAULT_DATA_DIR "%LOCALAPPDATA%"
#define CFGPARSER_DEFAULT_CACHE_DIR "%LOCALAPPDATA%\\Cache"
#define CFGPARSER_DEFAULT_LOG_DIR "%LOCALAPPDATA%\\Logs"
#define CFGPARSER_DEFAULT_TEMP_DIR "%TEMP%"
#define CFGPARSER_DEFAULT_BACKUP_DIR "%USERPROFILE%\\Documents\\Backups"
#elif defined(CFGPARSER_PLATFORM_MACOS)
#define CFGPARSER_DEFAULT_CONFIG_DIR "~/Library/Preferences"
#define CFGPARSER_DEFAULT_DATA_DIR "~/Library/Application Support"
#define CFGPARSER_DEFAULT_CACHE_DIR "~/Library/Caches"
#define CFGPARSER_DEFAULT_LOG_DIR "~/Library/Logs"
#define CFGPARSER_DEFAULT_TEMP_DIR "/tmp"
#define CFGPARSER_DEFAULT_BACKUP_DIR "~/Documents/Backups"
#else // Linux 和其他 Unix 系统
#define CFGPARSER_DEFAULT_CONFIG_DIR "~/.config"
#define CFGPARSER_DEFAULT_DATA_DIR "~/.local/share"
#define CFGPARSER_DEFAULT_CACHE_DIR "~/.cache"
#define CFGPARSER_DEFAULT_LOG_DIR "~/.local/share/logs"
#define CFGPARSER_DEFAULT_TEMP_DIR "/tmp"
#define CFGPARSER_DEFAULT_BACKUP_DIR "~/Documents/backups"
#endif

#endif // __CFGPARSER_STORAGE_PATH_H__